<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-15"><title>Apache JMeter
          -
          Apache JMeter&trade;</title><meta name="viewport" content="width=device-width, initial-scale=1"><link href="http://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css"><link rel="stylesheet" type="text/css" href="./css/new-style.css"></head><body role="document"><a href="#content" class="hidden">Main content</a><div class="header"><!--
            APACHE LOGO
          --><div><a href="http://www.apache.org"><img title="Apache Software Foundation" width="290" height="75" src="./images/asf-logo.png" alt="Logo ASF"></a></div><!--
              PROJECT LOGO
            --><div><a href="http://jmeter.apache.org/"><img src="./images/logo.jpg" alt="Apache JMeter"></a></div><div class="twitter"><div><a href="https://twitter.com/share" class="twitter-share-button" data-text="Powerful Load Testing with Apache #JMeter" data-via="ApacheJMeter" data-lang="en-gb" data-size="large">Tweet</a><script>
            (function(d,s,id){
              var js,
                  fjs=d.getElementsByTagName(s)[0],
                  p=/^http:/.test(d.location)?'http':'https';
              if (!d.getElementById(id)) {
                  js=d.createElement(s);
                  js.id=id;
                  js.src=p+'://platform.twitter.com/widgets.js';
                  fjs.parentNode.insertBefore(js,fjs);
              }
            })(document, 'script', 'twitter-wjs');
              </script></div><div><a href="https://twitter.com/ApacheJMeter" class="twitter-follow-button" data-show-count="false" data-lang="en-gb" data-size="large">Follow</a><script>(function(d,s,id){
                var js,
                    fjs=d.getElementsByTagName(s)[0],
                    p=/^http:/.test(d.location)?'http':'https';
                if (!d.getElementById(id)) {
                    js=d.createElement(s);
                    js.id=id;
                    js.src=p+'://platform.twitter.com/widgets.js';
                    fjs.parentNode.insertBefore(js,fjs);
                }
            })(document, 'script', 'twitter-wjs');
              </script></div></div><div class="banner"><iframe src="http://www.apache.org/ads/bannerbar.html" style="border-width:0;" frameborder="0" scrolling="no"></iframe><div class="clear"></div></div></div><div class="nav"><ul class="menu"><li><div class="menu-title">About</div><ul><li><a href="./index.html">Overview</a></li><li><a href="http://twitter.com/ApacheJMeter">JMeter on Twitter<img src="./images/twitter.png" alt="Icon for JMeter on Twitter"></a></li><li><a href="./issues.html">Issue Tracking</a></li><li><a href="http://projects.apache.org/feeds/rss/jmeter.xml">Subscribe to What's New</a></li><li><a href="http://www.apache.org/licenses/">License</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Download</div><ul><li><a href="./download_jmeter.cgi">Download Releases</a></li><li><a href="./nightly.html">Developer (Nightly) Builds</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Documentation</div><ul><li><a href="./changes.html">Changes per version</a></li><li><a href="./usermanual/get-started.html">Get Started</a></li><li><a href="./usermanual/index.html">User Manual</a></li><li><a href="./usermanual/best-practices.html">Best Practices</a></li><li><a href="./usermanual/component_reference.html">Component Reference</a></li><li><a href="./usermanual/functions.html">Functions Reference</a></li><li><a href="./api/index.html">Javadocs</a></li><li><a href="./building.html">Building JMeter and Add-Ons</a></li><li><a href="http://wiki.apache.org/jmeter">JMeter Wiki</a></li><li><a href="http://wiki.apache.org/jmeter/JMeterFAQ">FAQ (Wiki)</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Tutorials (PDF format)</div><ul><li><a href="./usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a></li><li><a href="./usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a></li><li><a href="./usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a></li><li><a href="./usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a></li><li><a href="./extending/jmeter_tutorial.pdf">Extending JMeter</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Community</div><ul><li><a href="http://wiki.apache.org/jmeter/JMeterCommitters">Contributors</a></li><li><a href="./mail.html">Mailing Lists</a></li><li><a href="./svnindex.html">SVN Repositories</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Foundation</div><ul><li><a href="http://www.apache.org/">ASF</a></li><li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a></li><li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li></ul></li></ul></div><div class="main" id="content"><div class="section"><h1>Apache JMeter&trade;</h1>
    <p>
      The <b>Apache JMeter&trade;</b> application is open source software,
      a 100% pure Java application designed
      to load test functional behavior and measure performance.  It was
      originally designed for testing Web Applications but has
      since expanded to other test functions.
    </p>
    <h2>What can I do with it?</h2>
    <p>
      Apache JMeter may be used to test performance both on static and dynamic
      resources (Webservices (SOAP/REST), Web dynamic languages - PHP, Java, ASP.NET, Files, etc. -, Java Objects, Data Bases and
      Queries, FTP Servers and more). It can be used to simulate a heavy
load on a server, group of servers, network or object to test its strength or to analyze
overall performance under different load types. You can use it to make a
graphical analysis of performance or to test your server/script/object
behavior under heavy concurrent load.
</p>
<h2>What does it do?</h2>
<p>Apache JMeter features include:</p>
<ul>
    <li>Ability to load and performance test many different server/protocol types:
        <ul>
        <li>Web - HTTP, HTTPS</li>
        <li>SOAP / REST</li>
        <li>FTP</li>
        <li>Database via JDBC</li>
        <li>LDAP</li>
        <li>Message-oriented middleware (MOM) via JMS</li>
        <li>Mail - SMTP(S), POP3(S) and IMAP(S)</li>
        <li>MongoDB (NoSQL)</li>
        <li>Native commands or shell scripts</li>
        <li>TCP</li>
        </ul>
    </li>
    <li>Complete portability and <b>100% Java purity</b>.</li>
    <li>Full <b>multithreading</b> framework allows concurrent sampling by many threads and
        simultaneous sampling of different functions by separate thread groups.</li>
    <li>Careful <b>GUI</b> design allows faster Test Plan building and debugging.</li>
    <li>Caching and offline analysis/replaying of test results.</li>
    <li><b>Highly Extensible core:</b>
      <ul>
        <li>Pluggable Samplers allow unlimited testing capabilities.</li>
        <li>Several load statistics may be chosen with <b>pluggable timers</b>.</li>
        <li>Data analysis and <b>visualization plugins</b> allow great extensibility
        as well as personalization.</li>
        <li>Functions can be used to provide dynamic input to a test or provide data manipulation.</li>
        <li><b>Scriptable Samplers</b> (BeanShell, BSF-compatible languages and JSR223-compatible languages)</li>
      </ul>
    </li>
</ul>
<h2>JMeter is not a browser</h2>
<p>
JMeter is not a browser.
As far as web-services and remote services are concerned, JMeter looks like a browser (or rather, multiple browsers);
however JMeter does not perform all the actions supported by browsers.
In particular, JMeter does not execute the Javascript found in HTML pages.
Nor does it render the HTML pages as a browser does 
(it's possible to view the response as HTML etc, but the timings are not included in any samples, and only one sample in one thread is ever viewed at a time).
</p>

<h2>How do I do it?</h2>
<ul>
<li><a href="usermanual/index.html">Using JMeter</a></li>
<li><a href="http://wiki.apache.org/jmeter/">JMeter Wiki</a></li>
<li><a href="http://wiki.apache.org/jmeter/JMeterFAQ">JMeter FAQ (Wiki)</a></li>
<li><a href="api/index.html">Javadoc API documentation</a></li>
<li><a href="localising/index.html">JMeter Localisation (Translator's Guide)</a></li>
<li><a href="building.html">Building JMeter and Add-Ons</a></li>
</ul>
<h2>Tutorials (PDF)</h2>
<ul>
<li><a href="usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a></li>
<li><a href="usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a></li>
<li><a href="usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a></li>
<li><a href="usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a></li>
<li><a href="extending/jmeter_tutorial.pdf">Extending JMeter</a></li>
</ul>
<h2>Further Information About JMeter</h2>
<ul>
<li><a href="changes.html">Changes List</a></li>
<li><a href="issues.html">Issues</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="mail.html">Mailing Lists</a></li>
<li><a href="svnindex.html">SVN Repositories</a></li>
<li><a href="http://wiki.apache.org/jmeter/JMeterCommitters">Contributors</a></li>
</ul>
</div></div><div class="footer"><div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2015
            , Apache Software Foundation
          </div><div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div></div></body></html>